const path = require('path')
const { merge } = require('webpack-merge')
const commonConfig = require('./webpack.common')

module.exports = merge(commonConfig, {
  entry: './src/main.js',
  output: {
    path: path.join(__dirname, 'dist'),
    filename: '[name].bundle.js',
    chunkFilename: '[name].chunk.js',
    pathinfo: false // webpack 会在输出的 bundle 中生成路径信息。然而，在打包数千个模块的项目中，这会导致造成垃圾回收性能压力
  },
  mode: 'development',
  devtool: 'cheap-module-source-map',
  devServer: {
    clientLogLevel: 'none', // 当使用内联模式(inline mode)时，控制台(console)将显示消息，可能的值有 none, error, warning 或者 info（默认值）。

    historyApiFallback: { // 当使用 HTML5 History API 时，任意的 404 响应都可能需要被替代为 index.html
      index: 'index.html'
    },

    // hot: true,// 启用 webpack 的模块热替换特性

    hotOnly: true, // 只使用 HMR， 不会 fallback 到 live reloading

    contentBase: './public', // 额外为开发服务器指定查找资源目录,

    compress: true, // 一切服务都启用gzip 压缩：

    host: 'localhost', // 指定使用一个 host。默认是 localhost

    port: '8888', // 指定要监听请求的端口号

    open: true, // local服务器自动打开浏览器。

    overlay: false, // 当出现编译器错误或警告时，在浏览器中显示全屏遮罩层。默认情况下禁用。

    publicPath: '', // 浏览器中访问的相对路径

    proxy: { // 代理配置
      '/api/': {
        target: 'https://github.com/',
        changeOrigin: true,
        logLevel: 'debug'
      }
    },

    disableHostCheck: true
  }
})
